package com.basics.api.service;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.basics.api.request.channel.*;
import com.basics.api.response.channel.ChannelPostListData;
import com.basics.api.response.channel.CommentData;
import com.basics.api.response.channel.PostCommentListData;
import com.basics.api.response.channel.PostInfoData;
import com.basics.channel.entity.CyChannelTopic;

import java.util.List;

public interface PostApiService {

    /**
     * 获取频道帖子列表
     * @param req
     * @param userId
     * @return
     */
    IPage<ChannelPostListData> selectChannelPostList(ChannelPostReq req, Long userId);

    /**
     * 获取频道下的话题板块列表 用于帖子导航
     * @param channelId
     * @param userId
     * @return
     */
    List<CyChannelTopic> selectTopicListForPost(Long channelId, Long userId);

    /**
     * 获取帖子详情
     * @param postId
     * @param userId
     * @return
     */
    PostInfoData getPostInfo(Long postId, Long userId);



    /**
     * 获取帖子评论列表
     * @param req
     * @param userId
     * @return
     */
    IPage<PostCommentListData> selectCommentList(CommentReq req, Long userId);

    /**
     * 获取帖子子评论回复列表
     * @param req
     * @param userId
     * @return
     */
    IPage<PostCommentListData> selectSubCommentList(SubCommentReq req, Long userId);

    /**
     * 发布帖子
     * @param req
     * @param userId
     */
    void pubPost(PubPostReq req, Long userId, Long organizationId);

    /**
     * 删除帖子
     * @param postId
     * @param userId
     */
    void deletePost(Long postId,Long userId);

    /**
     * 发布品论
     * @param req
     * @param userId
     */
    CommentData pubComment(PubCommentReq req, Long userId);

    /**
     * 点赞评论
     * @param commentId
     * @param userId
     */
    void priseComment(String commentId,Long userId);

    /**
     * 点赞帖子
     * @param postId
     * @param userId
     */
    void prisePost(Long postId,Long userId);

    /**
     * 删除评论
     * @param commentId
     * @param userId
     */
    void deleteComment(String commentId,Long organizationId,Long userId);
}
